﻿using System;
using System.Data;
using System.IO;
using HiTeachers.Entities;
using HiTeachers.Services;
using HiTeachers.Utilities;

namespace HiTeachers.Web
{
    public partial class Forget : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            errMsg.Visible = false;
        }

        protected void BtnForgetClick(object sender, EventArgs e)
        {
            if (!Page.IsValid) return;

            try
            {
                Teacher teacher = TeacherServices.IsEmailAlreadyExist(txtEmail.Text);
                if (teacher != null)
                {
                    SendEmailAccountInfo(teacher);
                    var msgText = "<img src=\"images/info.png\" alt=\"\" />";
                    msgText += "Vui lòng kiểm tra email để nhận lại mật khẩu của bạn!";
                    ltrMsg.Text = msgText;
                    errMsg.Attributes.Add("class", "info");
                }
                else
                {
                    var msgText = "<img src=\"images/warning.png\" alt=\"\" />";
                    msgText += "Xin lỗi bạn. Chúng tôi không tìm thấy email của bạn trong hệ thống!";
                    ltrMsg.Text = msgText;
                    errMsg.Attributes.Add("class", "error");
                }
            }
            catch (Exception)
            {
                var msgText = "<img src=\"images/warning.png\" alt=\"\" />";
                msgText += "Xin lỗi bạn. Chúng tôi không tìm thấy email của bạn trong hệ thống!";
                ltrMsg.Text = msgText;
                errMsg.Attributes.Add("class", "error");
            }
            errMsg.Visible = true;
        }

        public void SendEmailAccountInfo(Teacher teacher)
        {
            string tmpPath = Server.MapPath("mailtemplates");
            string mailCntPath = Path.Combine(tmpPath, "MailContents.xml");

            var dataSet = new DataSet();
            dataSet.ReadXml(mailCntPath);
            DataRow[] rows = dataSet.Tables["ForgetPassword"].Select();
            string subject = Convert.ToString(rows[0]["Subject"]);

            NVelocityBuilder.SetResourcePath(tmpPath);
            string password = CryptorEngine.Decrypt(teacher.Password, CryptorEngine.EncryptKey, true);
            var contentMail = NVelocityBuilder.ForgetPasswordEmailBuilder(Convert.ToString(rows[0]["Content"]), teacher.Name, teacher.Email, password);

            EmailSender.SendMail(subject, contentMail, teacher.Email);
        }
    }
}
